package com.bird.component.lang.util

/**
 * 替换指定字符串的指定区间内字符为固定字符
 *
 * @param startInclude 开始位置（包含）
 * @param endExclude   结束位置（不包含）
 * @param replacedChar 被替换的字符
 * @return 替换后的字符串
 */
fun CharSequence.hide(startInclude: Int, endExclude: Int, replacedChar: Char = '*'): String {
    if (this.isEmpty()) {
        return this.toString()
    }
    val len = this.length
    //需要截取的长度不能大于字符串长度
    if (startInclude >= len || endExclude > len) {
        return this.toString()
    }
    //需要截取的不能小于0
    if (startInclude < 0 || endExclude < 0) {
        return this.toString()
    }
    return this.substring(0, startInclude) +
            this.substring(startInclude, endExclude).replace("\\d".toRegex(), replacedChar.toString()) +
            this.substring(endExclude)
}